1. Cross-Reference to Other Related Application
This patent application is a continuation-in-part of commonly assigned copending U.S. patent application Ser. No. 07/444,090, filed Nov. 30, 1989 for BUFFERING CONTROL FOR ACCOMMODATING VARIABLE DATA EXCHANGE RATES by Irene F. Stein and Steven L. Webb.
2. Field of the Invention
The present invention relates to devices and methods for handling digital data interchanges between assemblies which have differing data exchange rates. More particularly, the present invention relates to processes and apparatus which permit production of digital information from a source at a rate which does not match the rate of information demand from a system intended to ultimately receive the data produced by that source. While not necessarily so limited, the present invention is especially useful for allowing a scanner which converts an image into a stream of digital data to successfully communicate with a receiving device that requests data from the scanner at a rate which does not match the rate data is produced by the scanner.
3. Description of the Prior Art
In an ideal system, digital data for transfer to a receiving device is produced at the same rate that the receiving device can accept it. Such a system does not need any buffering of data. However, many system configurations are such that the digital data is produced from a source at a rate quite different from the ideal data reception rate of the receiver. Data transfer to a remote processor often entails accumulation of the data so that a large block of that data is communicated to the remote processor on command. While the remote processor might have the capability of accepting the entire block of data at a rate much greater than it is produced at the source, the enablement of data transfer communication by the remote receiver occurs only sporadically and asynchronously with respect to data origination at the source.
The problem is particularly apparent in systems employing a document scanner as the data source and a remote data processor as the ultimate receiver. Buffers having enough capacity to store data corresponding to the entire image could permit uninterrupted image scanning followed by transfer of the entire buffer contents to the host. This entails undesirably large buffers especially where each scanned pixel is represented by a byte or more of scaling information.
For instance, a typical color pixel might require three bytes of eight bits each for a total of twenty-four bits to represent a single pixel. Further, the data transfer is delayed until the scan is complete before the host receives any data.
It is possible under some circumstances that the remote processor can accept data at a far greater rate than the scanner can produce it, but, in other situations, the scanner produces data faster that the host can request and/or accept it. Rather than to waste the capabilities of the processor while the scanner is producing its data, the processor releases its interface with the scanner and only periodically enables data transfer or inquires as to whether data is ready for transfer. Therefore buffer memories are often used to accumulate data for subsequent transfer to the remote processor on demand.
Smaller, more practical buffers require some form of synchronization or coordination of the data production from the scanner with the receiving host. It is desirable to produce the data transfers periodically while releasing the host in the interim for handling other functions. Unfortunately, if the data for whatever reason is not requested before the buffer is full, it is necessary to stop the data generation from the scanner to avoid the risk of lost data.
U.S. Pat. No. 4,752,891 by Van Dael et al shows a system for buffered handling of data transfers between a scanner and requesting host where the original image translates to data in a quantity greater than the size of the buffer. A microprocessor receives data about the image size which it divides into a number of segments each equal to or less than the buffer size. The system then scans the first segment until the buffer is full. At that point, scanning is stopped and the scanner mechanism is returned to its original scan start position while the buffer data is transferred to the host. Thereafter, the scanning is restarted with data loading of the buffer enabled whenever the initial boundary of the next image segment is reached. This procedure is repeated until the number of image segments as originally computed is scanned in sequence. Thus, the Van Daele device is restricted to sequences of discrete image scans each equal to the buffer size with mandatory repositioning of the scanner mechanism to its original start position between each segment scan. This allows use of a smaller buffer. However, it aggravates the lost time associated with the prior art wherein a complete image is loaded into a large buffer followed by data transfer to the host while the scanner is repositioned. Furthermore, the maximum data Van Daele et al can acquire in any given scan is limited to the buffer size.
It is also suggested in the prior art to employ separate buffer stores wherein one buffer is loaded from a source. Its contents are then transferred to another buffer which independently interfaces with another data processing device of one kind or another. An example is shown in U.S. Pat. No. 4,511,928 by Colomb. The Colomb device involves the greater expense of separate buffers with their own interfaces and controls. It is incapable of concurrent loading and emptying of a common buffer.
U.S. Pat. No. 4,367,493 by Matteson describes a system for allowing data exchanges between a scanning device and an output device with disparate data handling rates by use of a buffer. In FIG. 3 of Matteson, an up/down counter keeps track of the data loaded and unloaded from the buffers. That counter drives control circuitry which responds to a preset maximum count (T2) in the up/down counter to commence reducing or dropping of power to the drive motor. However, an encoder and its associated sensor continue their data gating function even as the motor slows to a stop. Removal of adequate counts from the up/down counter as a result of data transfers to an output device continues until a preset minimum count T1 is reached to reactivate the drive motor power circuit. The motor accelerates so that the encoder immediately commences production of gating pulses at an increasing rate until the motor reaches full speed. Accordingly, all of the potential scan line losses as well as the distortion resulting from slowing and stopping of a drive motor and accelerating it at a later time, is experienced by devices constructed in accordance with the teachings of the Matteson patent.
Another arrangement to accommodate the differing data interfacing rates in a somewhat similar manner to Matteson is shown in U.S. Pat. No. 4,748,514 by Bell wherein the speed of the scanner motor is slowed and stopped as the data buffer approaches and reaches capacity. However it is highly undesirable to significantly vary the speed of the scanning bar of a scanner because of the distortion introduced to the data thus collected.
Other prior art systems have attempted to resolve the problem by utilizing dual data memories so that the remote processor receives data from one memory while the scanner is loading data into the other memory. This does not prevent loss of data when the remote unit is delayed for a period long enough for the scanner to fill both buffer memories.
None of the known prior art data buffering configurations realize minimal data buffer size while obtaining maximum data transfer as is obtained by the present invention. Further, these advantages exist for this invention despite significant disparities between data production as by a scanner and data reception as by a receive command generating data processor. Prior buffering systems do not realize the advantages of concurrent data transfers into and out of a common memory. Both results are advantageously obtained by the present invention.